package de.fhd.pms.ctrl;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

//Annotation, gibt dem Compiler einen Hinweis darauf, dass diese Klasse als Controller fungiert

/**
 * Controller von Home.
 * <p>
 * Der HomeController übernimmt die Ablaufsteuerung für das Handling von Home.
 * 
 * @author Martin Schmid
 * @author Florian Schachner
 */
@Controller
public class HomeController {

	// Logger einbauen, der für die Klasse HomeController Logging-Einträge
	// erstellt
	private static Logger log = Logger.getLogger(HomeController.class);

	// Annotation, auf welche URL bzw. auf welchen Befehl der Controller
	// reagieren soll.
	// index.html hat nichts mehr mit den Dateinamen zu tun, dies ist nur ein
	// Befehl!
	// Auch möglich: @RequestMapping("/index.html")

	/**
	 * Edit-Methode von HomeController.
	 * <p>
	 * Hierbei wird es ermöglicht, Home zu aktualisieren bzw. zu editieren.
	 * Diese Methode reagiert auf einen HTTP-Request '/index.html'. Abschließend
	 * wird die View mit Namen "home" aufgerufen.
	 * 
	 * @return Gibt ein Objekt vom Typ {@link ModelAndView} ("home") zurück.
	 * @author Martin Schmid
	 * @author Florian Schachner
	 */
	@RequestMapping(value = "/index.html")
	// ModelAndView - EDIT
	public ModelAndView edit() {
		log.info("HOME WURDE GESTARTET");

		// Ein neues ModelAndView Objekt wird erzeugt (Standard)
		// Wenn Home aufgefufen wird, dann wird dies so angezeigt, indem man dem
		// mv mehrere Objekte hinzufügt (addObject)
		ModelAndView mv = new ModelAndView();
		mv.addObject("title", "Herzlich Willkommen zum CarSharing-Projekt!");
		mv.addObject(
				"leistungsnachweis",
				"Diese Projektarbeit dient als Leistungsnachweis für die Veranstaltung 'Programmierung Multimedialer Systeme' im Wintersemester 2011/2012");
		mv.addObject("teammitglieder",
				"Teammitglieder: Martin Schmid und Florian Schachner");
		mv.addObject(
				"message",
				"Mithilfe dieser Applikation können sie sich zum CarSharing-Projekt als Teilnehmer eintragen, neue Automobile anlegen und Fahrten absolvieren.");

		// Nach der Ausführung dieses Controllers benutzen wir eine ganz
		// bestimmte View, die im Browser angezeigt wird.
		// Der Name der View wird der Methode setViewName als Parameter
		// mitgegeben und heißt "home".
		// Wie die Views beschrieben sind, ist im application-context.xml unter
		// SCHRITT 8 - VIEWS, beschrieben.
		mv.setViewName("home");
		return mv;
	}
}
